package com.hui.dao;

import com.hui.entity.Manager;
import com.hui.mapper.ManagerMapper;
import com.hui.mapper.ManagerVoMapper;
import com.hui.util.DruidUtil;
import com.hui.vo.ManagerVo;


import java.util.List;

/**
 * @Description Manager持久层
 * @date 2023/2/10 11:01
 */
public class ManagerDao {

    /**
     * 根据用户名和密码登录
     **/
    public Manager findByUserNameAndPassword(String loginName, String loginPwd) {
        String sql = "select * from tb_managers where login_name =? and login_pwd=?";
        return DruidUtil.commonFindObjectByParam(sql, new ManagerMapper(), loginName, loginPwd);
    }

    /**
     * manager-role
     * 根据id查找管理员
     **/
    public ManagerVo findById(int mgrId) {
        String sql = "select mar.*,ro.role_id,ro.role_name, GROUP_CONCAT(ro.role_id) roleIds, GROUP_CONCAT(ro.role_name) roleNames\n" +
                "from tb_managers mar,tb_mgr_role mr, tb_roles ro \n" +
                "where mar.mgr_id=mr.mgr_id and mr.role_id=ro.role_id \n" +
                "and mar.mgr_id=" + mgrId +
                " GROUP BY ro.role_id,ro.role_name";

        return DruidUtil.commonFindObjectByParam(sql, new ManagerVoMapper());
    }

    /**
     * 查找所有管理员
     **/
    public List<ManagerVo> findManagerAll() {
        String sql = "select mar.*,ro.role_id,ro.role_name  \n" +
                "from tb_managers mar,tb_mgr_role mr, tb_roles ro \n" +
                " where mar.mgr_id=mr.mgr_id and mr.role_id=ro.role_id ";
        return DruidUtil.commonFindListByParam(sql, new ManagerVoMapper());
    }


    /**
     * 根据id删除信息
     **/
    public void delManagerById(int mgrId) {
        String sql = "delete from tb_managers where mgr_id=? ";
        DruidUtil.commonUpdate(sql, mgrId);
    }


    /**
     * 添加管理员用户
     **/
    public int addManager(Manager manager) {
        String sql = "INSERT INTO tb_managers VALUES(null,?,?,?,?,?,?,?,?)";
        return DruidUtil.commonUpdateReturnKey(sql, manager.getLoginName(), manager.getLoginPwd(), manager.getMgrName(), manager.getMgrGender(),
                manager.getMgrTel(), manager.getMgrEmail(), manager.getMgrQQ(), manager.getCreateTime());
    }

    /**
     * 添加管理员-职位关联表
     **/
    public void addManagerRole(int mgrId, int roleId) {
        String sql = "INSERT INTO tb_mgr_role VALUES(?,?)";
        DruidUtil.commonUpdate(sql, mgrId, roleId);
    }

    /**
     * 根据管理员id删除职位-管理员关联表数据
     **/
    public void deleteManagerRoleByMgrId(int mgrId) {
        String sql = "DELETE from tb_mgr_role where mgr_id=?";
        DruidUtil.commonUpdate(sql, mgrId);
    }

    /**
     * 修改管理员信息
     **/
    public void updateManager(Manager manager) {
        String sql = "update tb_managers  set login_name=?,login_pwd=?,mgr_name=?, mgr_gender=?,mgr_tel=?,mgr_email=?,mgr_qq=? where mgr_id=?";
        DruidUtil.commonUpdate(sql, manager.getLoginName(), manager.getLoginPwd(),manager.getMgrName(), manager.getMgrGender(), manager.getMgrTel(), manager.getMgrEmail(), manager.getMgrQQ(), manager.getMgrId());
    }


    /**
     * 根据管理员id和职位id删除数据
     **/
    public void deleteManagerRoleByRoleId(int mgrId, int roleId) {
        String sql = "DELETE from tb_mgr_role where mgr_id=? and role_id=?";
        DruidUtil.commonUpdate(sql, mgrId, roleId);
    }
}
